import yaml
import os
import sys

# print(os.path.abspath(sys.argv[0]))

config_path = os.path.abspath(sys.argv[0]).rsplit('\\',1)[0]+'\\config.yaml'
if os.path.isfile(config_path):
    with open(config_path) as y:
        config = yaml.load(y.read(), Loader=yaml.FullLoader)
else:
    config = {
        'user': None,
        'password': None,
        'ip': None,
        'method': 'cmcc',
        'phone': False
    }
    with open(config_path, 'w') as y:
        yaml.dump(config, y, sort_keys=False)
    print('请先按照生成的config.yaml更改设置后, 再使用本脚本.')
    print(f'''
    user:       你的\033[1;33;40m用户名\033[0m.
    password:   你的\033[1;33;40m密码\033[0m.
    ip:         电脑直接连接到校园网的时候, 可以不填;
                如果是作为脚本挂在路由器上的, 也可以不填;
                只有客户端跨过路由器连接到校园网时, 才需要手动在此处填写\033[1;33;40m路由器的ip\033[0m.
    method:     电信对应\033[1;33;40mtelecom\033[0m, 移动对应\033[1;33;40mcmcc\033[0m, 教师或临时对应\033[1;33;40mxyw\033[0m.
    phone:      模拟手机连接时请填写\033[1;33;40mtrue\033[0m, 模拟电脑连接时填写\033[1;33;40mfalse\033[0m.
    ''')
    sys.exit(0)

if config['user'] == None or config['password'] == None:
    print('账号和密码都不能为空!')
    sys.exit(0)

if config['method'] not in ('cmcc', 'telecom', 'xyw'):
    print('账号类型不正确!')
    sys.exit(0)

from auth import CQUPTDrcom
conn = CQUPTDrcom(name=config['user'], pw=config['password'], ip=config['ip'], method=config['method'], phone=config['phone'])
conn.detect_ip()

from time import sleep, time
import ping3

retry = 3
while 1:
    lag = ping3.ping('www.baidu.com')
    if isinstance(lag, float):
        print(f' - [{int(time())}]网络正常')
        break
    else:
        result = conn.login()
        if result != 0:
            print(f' - [{int(time())}]登陆异常')
            print(f' - [{int(time())}]目前已知会造成这类问题的原因有: 重复登陆, 账号占用')
        else:
            print(f' - [{int(time())}]登陆成功')
        sleep(5)
        retry -= 1